import { timerMgr } from "../com/TimerMgr";

/**
 * 定时器基类
 */
export class BaseTimer {

    /**
     * 延迟执行 相同caller的相同callback会覆盖
     * @param callback 
     * @param args 
     */
    callLater(callback: Function, args?: any[]) {
        timerMgr.callLater(this, callback, args);
    }

    /**
     * 延迟delay秒后执行 相同caller的相同callback会覆盖
     * @param callback 
     * @param delay 
     * @param args 
     */
    timerOnce(callback: Function, delay: number, args?: any[]) {
        timerMgr.once(this, callback, delay, args);
    }

    /**
     * 延迟delay帧后执行 相同caller的相同callback会覆盖
     * @param callback 
     * @param delay 
     * @param args 
     */
    frameOnce(callback: Function, delay: number, args?: any[]) {
        timerMgr.frameOnce(this, callback, delay, args);
    }

    /**
    * 立即执行定时器
    * @param callback 
    */
    callTimer(callback: Function) {
        timerMgr.callTimer(this, callback);
    }

    /**
     * 清除定时器
     * @param callback 
     */
    clearTimer(callback: Function) {
        timerMgr.clear(this, callback);
    }

    /**
     * 清除所有定时器
     */
    clearTimerAll() {
        timerMgr.clearAll(this);
    }

}